//
//  LogicData.h
//  firebkball
//
//  Created by flydy on 2018/5/27.
//
//

#ifndef LogicData_h
#define LogicData_h

#include <stdio.h>
#include "cocos2d.h"



class LogicData : public cocos2d::Ref {
public:
    static LogicData* getInstance();
    
public:
    
    int ball1Mask = 1 << 0;//球1
    int wallMask = 1 << 2;//篮板
    int ropeMask = 1 << 3;//篮筐底部，表示从篮子下来后的碰撞用
    int kuangMask = 1 << 4;//篮框

    int ropeTag = 30;
    int kuangTag = 20;
    int wallTag = 10;
    int ballTag = 2;
    
    //橡皮弹力。拉球的距离*这个值 就是实际的速度
    float bounce = 10.0f;
    
    //1正常 0暂停
    int gameStatus = 1;
    
    //1可以拉球， -1 已经发射出去， 2拉球调整位置中
    int status = 1;
    
    bool hasFallIn = false;
    
	//至高点
	float ballMaxHeight = 0;
    //高射球的判断标准
    float hightFireHeight = 900;
	//1篮筐， 2篮板， 3进篮
	int collStatusFlagsIndex = 0;
	int collStatusFlagsLen = 3;
    int collStatusFlags[3];
    cocos2d::Vec2 gravity = cocos2d::Vec2(0.0f, -980.0f);
    
    //球的当前速度，分为x,y方向的。拉球的时候，不断的改变这个值，放开后用这个最后的速度发射出去
    cocos2d::Vec2  currentV = cocos2d::Vec2(0, 0);
    
    //球的半径
    float ballRadius = 29;
    
    //球的原始位置
    cocos2d::Vec2 ballsposition = cocos2d::Vec2(10, 10);
    //球的当前位置
    cocos2d::Vec2 ballsposition_c = ballsposition;
    
    //篮筐的原始位置
    cocos2d::Vec2 lankuangPosition = cocos2d::Vec2(480, 670);
    //篮筐的当前位置
    cocos2d::Vec2 lankuangPosition_c = lankuangPosition;
    
    
public:
    ~LogicData();
    bool init();
	void resetFireBallStatus();
	int addCollStatusFlags(int flag);
    void printInfo();
};


#endif /* LogicData_h */
